using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using Planisoft.Entities;

namespace Planisoft.DAO.Mapping
{
    public class ContratoMap : EntityTypeConfiguration<Contrato>
    {
        public ContratoMap()
        {
            // Primary Key
            this.HasKey(t => t.IdContrato);

            // Properties
            // Table & Column Mappings
            this.ToTable("Contrato");
            this.Property(t => t.IdContrato).HasColumnName("IdContrato");
            this.Property(t => t.IdTrabajador).HasColumnName("IdTrabajador");
            this.Property(t => t.IdTipoContrato).HasColumnName("IdTipoContrato");
            this.Property(t => t.IdSituacionContrato).HasColumnName("IdSituacionContrato");
            this.Property(t => t.IdAreaTrabajo).HasColumnName("IdAreaTrabajo");
            this.Property(t => t.IdFinalizaContrato).HasColumnName("IdFinalizaContrato");
            this.Property(t => t.FechInicio).HasColumnName("FechInicio");
            this.Property(t => t.FechFin).HasColumnName("FechFin");
            this.Property(t => t.Sueldo).HasColumnName("Sueldo");

            // Relationships
            this.HasOptional(t => t.AreaTrabajo)
                .WithMany(t => t.Contratoes)
                .HasForeignKey(d => d.IdAreaTrabajo);
            this.HasOptional(t => t.Trabajador)
                .WithMany(t => t.Contratoes)
                .HasForeignKey(d => d.IdTrabajador);
            this.HasOptional(t => t.TipoContrato)
                .WithMany(t => t.Contratoes)
                .HasForeignKey(d => d.IdTipoContrato);
            this.HasOptional(t => t.SituacionContrato)
                .WithMany(t => t.Contratoes)
                .HasForeignKey(d => d.IdSituacionContrato);
            this.HasOptional(t => t.FinalizacionContrato)
                .WithMany(t => t.Contratoes)
                .HasForeignKey(d => d.IdFinalizaContrato);

        }
    }
}
